﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Linq.Expressions;
//using System.Text;
//using System.Threading.Tasks;
//using TimeProject.Engine.DbModels;

//namespace TimeProject.Engine.DbContent
//{
//    public static class IQueryableExtensions
//    {
//        internal static TEntity FirstOrDefaultEx<TEntity>(this IQueryable<TEntity> source) where TEntity : EntityBase
//        {
//            TEntity entity = source.FirstOrDefault();
//            if (entity != null)
//            {
//                Populate(entity);
//            }
//            return entity;

//            //TEntity entity = source.FirstOrDefault();
//            //if (entity != null)
//            //{
//            //    Populate(entity);
//            //}
//            //return entity;
//        }

//        internal static TEntity FirstOrDefaultEx<TEntity>(this IQueryable<TEntity> source, Expression<Func<TEntity, bool>> predicate) where TEntity : EntityBase
//        {
//            TEntity entity = source.FirstOrDefault(predicate);
//            if (entity != null)
//            {
//                Populate(entity);
//            }
//            return entity;

//            //TEntity entity = source.FirstOrDefault(predicate);
//            //if (entity != null)
//            //{
//            //    Populate(entity);
//            //}
//            //return entity;
//        }

//        internal static TEntity[] ToArrayEx<TEntity>(this IQueryable<TEntity> source) where TEntity : EntityBase
//        {
//            TEntity[] entities = source.ToArray();
//            Populate(entities);
//            return entities;

//            //TEntity[] entities = source.ToArray();
//            //Populate(entities);
//            //return entities;
//        }


//        //private static IQueryable<TEntity> Query<TEntity>(this IQueryable<TEntity> source) where TEntity : EntityBase
//        //{
//        //    IQueryable<TEntity> query = source;
//        //    query = query.Where(x => x.DeleteMark == null);
//        //    return query;
//        //}



//        private static void Populate<TEntity>(params TEntity[] entities) where TEntity : EntityBase
//        {
//            // TODO: Lähetä entityt plugarille!            
//        }

//    }
//}
